"""
__project__ = 'PythonProject'
__file_name__ = 'class_09'
__author__ = 'Sun'
__time__ = '2021/4/10 18:27'
__product_name = PyCharm

"""
"""
1.这两个参数是什么意思：*args，**kwargs？我们为什么要使用它们？
*args：我们不确定要往函数中传入多少个参数，或者我们想往函数中以列表和元组的形式传参数时，那就使要用*args；
**kwargs:我们不知道要往函数中传入多少个关键字参数，或者想传入字典的值作为关键字参数时，那就要使用**kwargs。

2.（先自己想，然后再实验，最后查百度）
下面代码会输出什么
def f(x, l = []):
    for i in range(x):
        l.append(i * i)
    print(l)
f(2)  # [0, 1]
f(3, [3, 2, 1])  # [3, 2, 1, 0, 1, 4]
f(3)       # [0, 1, 0, 1, 4]

3.如何在一个函数内部修改全局变量
使用global修改全局变量
"""
# 定义函数,定义函数的格式如下：
def 函数名():
    代码

# 定义一个函数，能够完成打印信息
def printInfo():
    print("人生苦短，珍惜当下")

# 调用函数通过函数名()即可完成
printInfo()
# 每次调用函数时，函数都会从头开始执行，当这个函数中的代码执行完成后，将会完成调用
# 如果执行中遇到了return也会结束执行

# 要求：定义一个函数，能够输出自己的姓名和年龄，并且调用这个函数让它执行
# name = "汐汐"
# age = 18
# def printInfomation():
#     print("我的名字:%s,我的年龄：%d"%(name, age))
# printInfomation()

# <1> 定义带有参数的函数
def add2num(a, b):
    c = a + b
    print(c)
# <2>调用带有参数的函数
add2num(111, 222)  # 调用带有参数的函数时，需要在小括号中传递参数

# <3> 练一练
# 要求：定义一个函数，完成前2个数完成加法运算，然后对第3个数，进行减法；然后调用这个函数
# 使用def定义函数，要注意有3个参数
# 调用的时候，这个函数定义时有几个参数，那么就需要传递几个参数
def calc(num1, num2, num3):
    num = num1 + num2 - num3
    print(num)
calc(10, 40, 20)